<?php
/*
 * @Author: liujiachen liujiachen@neuedu.com
 * @Date: 2024-09-10 15:44:44
 * @LastEditors: liujiachen liujiachen@neuedu.com
 * @LastEditTime: 2024-09-10 17:56:39
 * @FilePath: \WWW\phpcode\preg\book2.php
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
// 标题
header("Content-Type:text/html;charset=utf-8");
//设置脚本运行时间
set_time_limit(0);
// 给一个默认 user_agent 让他认为自己是浏览器
ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)');
/* 葬天剑主 */

//首先先获取 ul 列表

$content = file_get_contents("https://book.zongheng.com/showchapter/1274556.html");

//获取自己想要的列表 写正则表达式
//中间的内容没有给
$res = "/<ul\s*class=\"chapter-list\s*clearfix\">.*<\/ul>/ismU";
preg_match($res, $content, $reg);
$reg = isset($reg[0])?trim($reg[0]):"";
//判断是否为空
if(empty($reg))
{
    echo"获取列表内容失败\r\n";
    exit;
}
// 获取a标签
$rapper = "/<a\s*href=\"(.*)\"\s*target=\"_blank\"\s*title=\"(.*)\">(.*)<\/a>/ismU";
preg_match_all($rapper, $reg, $regger);
// var_dump($regger);
// exit;
//获取链接 标题属性 文本内容
$links = isset($regger[1]) ? $regger[1]: [];
$titles = isset($regger[2]) ? $regger[2]: [];
$titletexts = isset($regger[3]) ? $regger[3]: [];

if(empty($links)||empty($titles)||empty($titletexts))
{
    echo "没有获取到链接和标题内容\r\n";
    exit;
}
echo"以采集到标题\r\n";
//定义一个文件名称
$filename = date("ymd hi").".txt";
foreach($links as $key=>$value)
{
    
    echo"以采集$titletexts[$key] \r\n";
    $url = $value;
    $content = file_get_contents($url);

    // 书写正则 data-prescription="0" data-decoder=""
    $res = "/<div\s*class=\"content\"\s*data-prescription=\"0\"\s*data-decoder=\"\">.*<\/div>/ismU";
    preg_match($res, $content, $reppger);
   
    $reppger = isset($reppger[0])?$reppger[0]:[];
    if(empty($reppger)){
        echo "获取 $titletexts[$key]内容失败\r\n";
        exit;
    }
    // echo "已采集$titletexts[$key]\r\n";
    //去除p标签
    $reppger = preg_replace("/<p>|<\/p>/ismU","\r\n", $reppger);
    //去除多余的标签
    $reppger = strip_tags($reppger);
    // var_dump($reppger);
    // exit;
    sleep(0.5);
    //给数值
    //将读取的内容放入 其中
    file_put_contents("./$filename", $titletexts[$key]."\r\n".$reppger,FILE_APPEND);
}

// var_dump($reg);
// exit;

echo "采集结束\r\n";


?>